<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>

	<body>
		<script>
			var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

			var result = [];

			var ranNum = 3;

			for(var i = 0; i < ranNum; i++) {

				var ran = Math.floor(Math.random() * arr.length);

				result.push(arr[ran]);

				var center = arr[ran];

				arr[ran] = arr[arr.length - 1];

				arr[arr.length - 1] = center;

				arr = arr.slice(0, arr.length - 1);

			};
		</script>
		<script>
			var arr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];

			var result = [];

			var ranNum = 3;

			for(var i = 0; i < ranNum; i++) {

				var ran = Math.floor(Math.random() * (arr.length - i));

				result.push(arr[ran]);

				arr[ran] = arr[arr.length - i - 1];

			};
			console.log(result);
			console.log(arr);
		</script>
		<script>
			var x = document.getElementsByClassName("block"); //从class:block中得到HTML collection对象
			var index_x = [0, 1, 2, 3, 4, 5, 6, 7, 8]; //定义一个索引数组
			//从一个给定的数组arr中,随机返回num个不重复项
			function getArrayItems(arr, num) {
				//新建一个数组,将传入的数组复制过来,用于运算,而不要直接操作传入的数组;
				var temp_array = new Array();
				for(var index in arr) {
					temp_array.push(arr[index]);
				}
				//取出的数值项,保存在此数组
				var return_array = new Array();
				for(var i = 0; i < num; i++) {
					//判断如果数组还有可以取出的元素,以防下标越界
					if(temp_array.length > 0) {
						//在数组中产生一个随机索引
						var arrIndex = Math.floor(Math.random() * temp_array.length);
						//将此随机索引的对应的数组元素值复制出来
						return_array[i] = temp_array[arrIndex];
						//然后删掉此索引的数组元素,这时候temp_array变为新的数组
						temp_array.splice(arrIndex, 1);
					} else {
						//数组中数据项取完后,退出循环,比如数组本来只有10项,但要求取出20项.
						break;
					}
				}
				return return_array;
			}

			console.log(getArrayItems(index_x,3))
		</script>
	</body>

</html>